'''
Python 3 支持 int（整型）、float（浮点型）、bool（布尔型）、complex（复数）。

数值类型的赋值和计算都是很直观的，就像大多数语言一样。
'''

a, b, c, d = 20, 5.5, True, 4 + 3j
print(type(a), type(b), type(c), type(d))


# 整数（int）
a = 100          # 普通整数
b = -200         # 负整数
c = 0o123        # 八进制表示（以 0o 开头）
d = 0x1F         # 十六进制表示（以 0x 开头）
e = 0b1010       # 二进制表示（以 0b 开头）
print(f"整数示例: {a}, {b}, {c}, {d}, {e}")


# 浮点数（float）
f = 3.14         # 普通浮点数
g = 1.23e-4      # 科学计数法，表示 1.23 × 10^-4
h = .5           # 省略整数部分的浮点数
i = 3.           # 省略小数部分的浮点数
print(f"浮点数示例: {f}, {g}, {h}, {i}")


# 复数（complex）
j = 3 + 4j       # 复数，实部为 3，虚部为 4
k = complex(2, -1)  # 使用 complex() 函数创建复数
print(f"复数示例: {j}, {k}")


# 布尔值（bool）
m = True         # 布尔值 True，相当于整数 1
n = False        # 布尔值 False，相当于整数 0
print(f"布尔值示例: {m}, {n}")

'''
数字计算 ,混合运算当浮点型
除法运算：/ 表示普通除法，结果为浮点数；// 表示整除，结果为整数。
大整数支持：Python3 对大整数提供了无缝支持，不会溢出。
精度限制：浮点数的精度受计算机硬件限制，不适合需要高精度的场景（如金融计算）。
'''
a = 10
b = 3
print(a + b)     # 加法: 13
print(a - b)     # 减法: 7
print(a * b)     # 乘法: 30
print(a / b)     # 除法: 3.3333333333333335
print(a // b)    # 整除: 3
print(a % b)     # 取余: 1
print(a ** b)    # 幂运算: 1000

'''
数学函数 math 包
'''
import math

print(abs(-5))       # 绝对值: 5
print(round(math.pi, 2))  # 四舍五入: 3.14
print(math.sqrt(16)) # 平方根: 4.0
print(math.sin(math.pi/2)) # 正弦函数: 1.0
print(math.floor(3.9)) # 向下取整: 3
print(math.ceil(3.1))  # 向上取整: 4


'''
类型转换
'''
x = 10
y = float(x)      # 转换为浮点数: 10.0
z = complex(x)    # 转换为复数: (10+0j)

a = 3.14
b = int(a)        # 转换为整数: 3（直接截断小数部分）

'''
复数操作
'''
z = 3 + 4j
print(z.real)     # 实部: 3.0
print(z.imag)     # 虚部: 4.0
print(z.conjugate()) # 共轭复数: (3-4j)

'''
布尔运算：布尔值可以参与数值运算。
'''
a = True
b = False
print(a + 1)      # 输出: 2（True 相当于 1）
print(b + 5)      # 输出: 5（False 相当于 0）
print(not a)
print(a and b)
print(a or b)


'''
位运算
'''
a = 60            # 60 = 0011 1100
b = 13            # 13 = 0000 1101
c = 0

c = a & b        # 12 = 0000 1100
print ("1 - c 的值为：", c)

c = a | b        # 61 = 0011 1101
print ("2 - c 的值为：", c)

c = a ^ b        # 49 = 0011 0001
print ("3 - c 的值为：", c)

c = ~a           # -61 = 1100 0011
print ("4 - c 的值为：", c)

c = a << 2       # 240 = 1111 0000
print ("5 - c 的值为：", c)

c = a >> 2       # 15 = 0000 1111
print ("6 - c 的值为：", c)